package com.atguigu.spzx.manager.service.impl;

import com.atguigu.spzx.manager.mapper.SysRoleMapper;
import com.atguigu.spzx.manager.service.SysRoleService;
import com.atguigu.spzx.model.dto.system.SysRoleDto;
import com.atguigu.spzx.model.entity.system.SysRole;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author SNA
 * @date 2024/6/15
 * @Description
 **/
@Service
public class SysRoleServiceImpl implements SysRoleService {
    
    @Autowired
    private SysRoleMapper sysRoleMapper;


    /**
     * 根据条件分页查询系统角色信息。
     *
     * @param sysRoleDto 查询条件对象，包含角色相关的查询条件。
     * @param pageNum 当前页码，用于分页查询。
     * @param pageSize 每页显示的数量，用于分页查询。
     * @return PageInfo<SysRole> 分页查询结果，包含角色信息。
     *
     * 本方法通过PageHelper进行分页处理，首先根据传入的页码和每页数量设置分页参数。
     * 然后，调用sysRoleMapper的findByPage方法，根据查询条件sysRoleDto查询符合条件的角色列表。
     * 最后，使用查询结果列表构建PageInfo对象，该对象包含了分页信息和查询结果集。
     */
    @Override
    public PageInfo<SysRole> findByPage(SysRoleDto sysRoleDto, Integer pageNum, Integer pageSize) {

        // 设置分页参数，启动分页插件
        PageHelper.startPage(pageNum,pageSize);

        // 根据查询条件查询角色列表
        List<SysRole> list = sysRoleMapper.findByPage(sysRoleDto);

        // 构建并返回分页信息
        PageInfo<SysRole> pageInfo = new PageInfo<>(list);
        return pageInfo;
    }

    /**
     * 添加系统角色信息。
     *
     * @param sysRole 要添加的系统角色信息。
     */
    @Override
    public void saveSysRole(SysRole sysRole) {
        sysRoleMapper.saveSysRole(sysRole);
    }

    /**
     * 更新系统角色信息。
     *
     * @param sysRole 要更新的系统角色信息。
     */
    @Override
    public void updateSysRole(SysRole sysRole) {
        sysRoleMapper.updateSysRole(sysRole);
    }

    @Override
    public void deleteById(Long roleId) {
        sysRoleMapper.deleteById(roleId);
    }
}
